#pragma once

#include "BeanieIncludes.h"

enum MOUSE_MAP
{
	//mouse button
	BTN_LEFT   = 0,
	BTN_RIGHT  = 1,
	BTN_MIDDLE = 2,
};

enum KEYBOARD_MAP
{
	//alphabet keys
	KEY_A = DIK_A,	KEY_B = DIK_B,	KEY_C = DIK_C,	KEY_D = DIK_D,
	KEY_E = DIK_E,	KEY_F = DIK_F,	KEY_G = DIK_G,	KEY_H = DIK_H,
	KEY_I = DIK_I,	KEY_J = DIK_J,	KEY_K = DIK_K,	KEY_L = DIK_L,
	KEY_M = DIK_M,	KEY_N = DIK_N,	KEY_O = DIK_O,	KEY_P = DIK_P,
	KEY_Q = DIK_Q,	KEY_R = DIK_R,	KEY_S = DIK_S,	KEY_T = DIK_T,
	KEY_U = DIK_U,	KEY_V = DIK_V,	KEY_W = DIK_W,	KEY_X = DIK_X,
	KEY_Y = DIK_Y,	KEY_Z = DIK_Z,

	//number keys
	KEY_0 = DIK_0,	KEY_1 = DIK_1,	KEY_2 = DIK_2,
	KEY_3 = DIK_3,	KEY_4 = DIK_4,	KEY_5 = DIK_5,
	KEY_6 = DIK_6,	KEY_7 = DIK_7,	KEY_8 = DIK_8,
	KEY_9 = DIK_9,

	//arrow keys
	KEY_UP	  = DIK_UP,
	KEY_DOWN  = DIK_DOWN,
	KEY_LEFT  = DIK_LEFT,
	KEY_RIGHT = DIK_RIGHT,

	//other keys
	KEY_ENTER  = DIK_RETURN,
	KEY_ESCAPE = DIK_ESCAPE,
	KEY_SPACE  = DIK_SPACE,
	KEY_LCTRL  = DIK_LCONTROL,
	KEY_RCTRL  = DIK_RCONTROL,
};

//error code
enum ERROR_CODE
{
	//success code
	GPX_SUCCESS,
	INP_SUCCESS,
	VID_SUCCESS,
	SND_SUCCESS,
	FPS_SUCCESS,
	TIM_SUCCESS,

	//bypass code
	GPX_BYPASS,
	INP_BYPASS,
	VID_BYPASS,
	SND_BYPASS,
	FPS_BYPASS,
	TIM_BYPASS,

	//graphic error code
	GPX_INIT_DISPLAY_ERROR,
	GPX_INIT_CAPABILITY_ERROR,
	GPX_INIT_DEVICE_ERROR,
	GPX_INIT_TEXTURE_ERROR,
	GPX_INIT_FONT_ERROR,
	GPX_INIT_LINE_ERROR,
	GPX_UPDT_PROJECTION_ERROR,
	GPX_UPDT_VIEW_ERROR,
	GPX_LOAD_TEXTURE_ERROR,
	GPX_DRAW_CLEAR_ERROR,
	GPX_DRAW_BEGIN_ERROR,
	GPX_DRAW_BEGIN_TEXTURE_ERROR,
	GPX_DRAW_BEGIN_FONT_ERROR,
	GPX_DRAW_BEGIN_LINE_ERROR,
	GPX_DRAW_END_ERROR,
	GPX_DRAW_END_TEXTURE_ERROR,
	GPX_DRAW_END_FONT_ERROR,
	GPX_DRAW_END_LINE_ERROR,
	GPX_DRAW_PRESENT_ERROR,
	GPX_DRAW_TEXTURE_ERROR,
	GPX_DRAW_LINE_ERROR,

	//input error code
	INP_INIT_DEVICE_ERROR,
	INP_INIT_KDEVICE_ERROR,
	INP_INIT_MDEVICE_ERROR,
	INP_INIT_KFORMAT_ERROR,
	INP_INIT_MFORMAT_ERROR,
	INP_INIT_KCOOP_ERROR,
	INP_INIT_MCOOP_ERROR,
	INP_UPDT_KACQUIRE_ERROR,
	INP_UPDT_MACQUIRE_ERROR,
	INP_UPDT_KSTATE_ERROR,
	INP_UPDT_MSTATE_ERROR,

	//video error code
	VID_UPDT_EVENT_ERROR,
	VID_UPDT_FREE_ERROR,
	VID_LOAD_COINIT_ERROR,
	VID_LOAD_COCREATE_ERROR,
	VID_LOAD_QICONTROL_ERROR,
	VID_LOAD_QIEVENT_ERROR,
	VID_LOAD_QIWINDOW_ERROR,
	VID_LOAD_RENDER_ERROR,
	VID_LOAD_OWNER_ERROR,
	VID_LOAD_STYLE_ERROR,
	VID_LOAD_WINPOS_ERROR,
	VID_PLAY_RUN_ERROR,
	VID_STOP_STOP_ERROR,
	VID_STOP_VISIBLE_ERROR,
	VID_STOP_OWNER_ERROR,

	//sound error code
	SND_INIT_SYSTEM_ERROR,
	SND_INIT_VERSION_ERROR,
	SND_INIT_VERSIONCHECK_ERROR,
	SND_INIT_NUMDRIVER_ERROR,
	SND_INIT_OUTPUT_ERROR,
	SND_INIT_DRIVERCAP_ERROR,
	SND_INIT_SPEAKERMODE_ERROR,
	SND_INIT_DSPBUFFER_ERROR,
	SND_INIT_DRIVERINFO_ERROR,
	SND_INIT_SOFTWAREFORMAT_ERROR,
	SND_INIT_INIT_ERROR,
	SND_UPDT_UPDT_ERROR,
	SND_LOAD_AUDIO_ERROR,
	SND_PLAY_AUDIO_ERROR,

	//timer error code
	TIM_INIT_HFQ_SUPPORT_ERROR,
};